home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 050 / madtrb34.arc / ACTSK.PAS next >
Pascal/Delphi Source File  |  1986-04-25  |  1KB  |  47 lines

  1. Program ActivateSidekick;
  2.  
  3. Function Sidekick: Boolean;
  4. Const
  5.   SKactOffset = $012D;
  6.   SKverOffset = $012A;
  7.  
  8. Type
  9.   RegPack     = Record
  10.                     AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags: Integer;
  11.                 end;
  12.   Address     = record
  13.                   Offset : Integer;
  14.                   Segment: Integer;
  15.                 end;
  16.   SKstr       = array[1..2] of Char;
  17.   SKstrPtr    = ^SKstr;
  18.  
  19. Var
  20.   SKbios08Trap: Address absolute $0000:$0020  { Sidekick timer tick trap };
  21.   SKbios25Trap: Address absolute $0000:$0094  { Sidekick DOS int 25 trap };
  22.   SKfound     : Boolean;
  23.   SKstrCheck  : SKstrPtr;
  24.   R           : RegPack;
  25.  
  26. Begin
  27.   With SKbios25Trap do SKstrCheck:=Ptr(Segment, Offset-2);
  28.   SKfound:=(SKstrCheck^ = 'SK');
  29.   If Not SKFound Then Begin
  30.     With SKbios08Trap do SKstrCheck:=Ptr(Segment, Offset-4);
  31.     SKfound:=(SKstrCheck^ = 'SK');
  32.   End;
  33.  
  34.   { Sidekick version number must be >= 1.50 }
  35.   SKfound:=(SKfound and (Mem[Seg(SKstrCheck^): SKverOffset] >= 1)
  36.                     and (Mem[Seg(SKstrCheck^): SKverOffset+1] >= 50));
  37.   If SKFound Then Begin
  38.     Mem[Seg(SKstrCheck^): SKactOffset]:=1;  { Set Sidekick activate flag    }
  39.     Intr($28, R);                           { Turn control over to Sidekick }
  40.   End;
  41.   Sidekick:=SKfound;
  42. end  { Sidekick };
  43.  
  44. begin
  45.   if not Sidekick then Writeln('Sidekick 1.50 or later not loaded');
  46. end.
  47.   Sidekic